home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 July / CMCD0704.ISO / Software / Shareware / Comunicatii / jaeger / jaeger.exe / {app} / Tools / ToolTesting.py < prev    next >
Text File  |  2004-02-18  |  3KB  |  116 lines

  1. #!/bin/python
  2.  
  3. """
  4. ToolTesting.py
  5.  
  6. David Janes
  7. BlogMatrix
  8. 2004.02.15
  9. """
  10.  
  11. import sys
  12. import urllib
  13. import Tool
  14.  
  15. class ToolTesting(Tool.ToolInterface):
  16.     """
  17.     The interface for your tool. Simply create an instance of this object and Jaeger
  18.     will figure it out.
  19.     """
  20.     def __init__(self):
  21.         Tool.ToolInterface.__init__(self, self.WEBSERVER)
  22.         
  23.     def get_label(self, selected):
  24.         return    "Testing"
  25.         
  26.     def get_server(self, path):
  27.         """
  28.         """
  29.         return    {
  30.             "/": ( self.serve_root, "" ),
  31.             "/form": ( self.serve_form, "Form Demonstration" ),
  32.             "/cgi": ( self.serve_cgi, "CGI Demonstration" ),
  33.         }.get(path)
  34.         
  35.     def serve_root(self, operations, path, valuemap):
  36.         result = [
  37.             self.text_standard_header(path),
  38.             """
  39. <p>
  40. This extension doesn't really do anything useful, except to demonstrate
  41. how to write extensions to serve web pages.
  42.  
  43. <ul>
  44. <li><a href='cgi?url=io&x=y&happy=go-lucky'>CGI Demonstration</a>
  45. <li><a href='form'>Form Demonstration</a>
  46. </ul>""",
  47.             self.text_standard_footer()
  48.         ]
  49.         return    200, "text/html", None, result
  50.  
  51.     def serve_form(self, operations, path, valuemap):
  52.         #
  53.         #    The 'name' and 'phone' values are persisted through the '*userdata' functions
  54.         #
  55.         name = valuemap.get("name")
  56.         if name == None:
  57.             name = operations.get_userdata("name", "")
  58.         else:
  59.             operations.set_userdata("name", name)
  60.  
  61.         phone = valuemap.get("phone")
  62.         if phone == None:
  63.             phone = operations.get_userdata("phone", "")
  64.         else:
  65.             operations.set_userdata("phone", phone)
  66.         
  67.         result = [
  68.             self.text_standard_header(path),
  69.             """\
  70. <h2>Form Demonstration</h2>
  71. <p>
  72. The values the user enters into this form are persistent, even across multiple sessions
  73. of Jaëger!
  74.  
  75. <p>
  76. <form method="POST">
  77. <table>
  78. <tr>
  79. <td align="left">Name:</td>
  80. <td><input type="text" name="name" value=\"""" + self.escape_html(name) + """"></td>
  81. </tr>
  82. <tr>
  83. <td align="left">Phone:</td>
  84. <td><input type="text" name="phone" value=\"""" + self.escape_html(phone) + """"></td>
  85. </tr>
  86. <td>
  87. <tr>
  88. <td></td>
  89. <td><input type="Submit"></td>
  90. </tr>
  91. </table>
  92. </form>
  93. """
  94.         ]
  95.  
  96.         result.append(self.text_standard_footer())            
  97.         return    200, "text/html", None, result
  98.  
  99.     def serve_cgi(self, operations, path, valuemap):
  100.         result = [
  101.             self.text_standard_header(path),
  102.             "<h4>Path</h4><p>%s" % path,
  103.             "<h4>Parameters</h4><p>",
  104.         ]
  105.         
  106.         for key, value in valuemap.iteritems():
  107.             result.append("%s: %s<br>" % ( key, value ))
  108.  
  109.         result.append(self.text_standard_footer())            
  110.         return    200, "text/html", None, result
  111.  
  112. #
  113. # creating it will register it
  114. #
  115. ToolTesting()
  116.